██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Livello di collegamento dati
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
In mwbqtelecomunicazioni il mwbglivello di collegamento dati (mwbwdata link layer) è il secondo livello del mwcamodello OSI per le mwcqreti di calcolatori. Questo livello in trasmissione riceve mwcgpacchetti dati dal mwcwlivello di rete e forma i mwdamwdqframe che vengono passati al sottostante mwdglivello fisico con l'obiettivo di permettere il trasferimento affidabile dei dati attraverso il sottostante mwdwcanale.
Contents
• Framing
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Descrizione
Nello stack IP, in alcuni casi, il livello datalink consiste nell'utilizzo di una rete realizzata con un altro protocollo per il trasporto di pacchetti IP. Questo avviene ad esempio con mwewX.25, mwfaFrame Relay, mwfqAsynchronous Transfer Mode. Alcuni esempi di protocolli del livello datalink sono:
Può essere o non essere affidabile: molti protocolli di data link non utilizzano conferme e alcuni potrebbero addirittura non controllare se sono stati commessi errori di trasmissione. In questo caso devono essere i livelli superiori ad effettuare il mwiacontrollo di flusso, il controllo degli errori e gestire le conferme (e relative ritrasmissioni).
In alcune reti, come le mwigLAN mwiwIEEE 802, questo livello è diviso nei sottolivelli mwjaMAC e mwjqLLC. Quest'ultimo è comune a tutti i livelli MAC, come mwjgtoken ring e mwjwIEEE 802.11 ma anche a livelli MAC che non fanno parte dello standard 802, come mwkaFDDI.
Funzionalità
Il livello datalink deve quindi svolgere più funzioni specifiche:
• Nella fase di mwlqtrasmissione raggruppa i bit provenienti dallo strato superiore e destinati al livello fisico in pacchetti chiamati frame (mwlgframing);
• Nella fase di ricezione controlla e gestisce gli errori di trasmissione (mwmamwmqcontrollo di errore);
• Regola il flusso della trasmissione fra sorgente e destinatario (mwmwmwnacontrollo di flusso).
• Nella fase di trasmissione opera una qualche forma di mwngaccesso multiplo/mwnwmultiplazione per l'accesso condiviso tra più utenti al canale fisico che eviti collisioni tra pacchetti e mwoainterferenze in ricezione o sul canale.
Tutto ciò consente di far apparire in ricezione, al livello superiore, il mwogmezzo fisico come una linea di trasmissione esente da errori.cite-ref-1[1]cite-ref-2[2]
Sottolivello LLC
Il sottolivello superiore è mwrqLogical link control (LLC), e può fornire servizi di controllo di flusso, conferma, rilevazione (o correzione) degli errori. I protocolli mwrgPPP e mwrwHDLC fanno parte di questo sottolivello.
I protocolli di sottolivello LLC che forniscono il servizio di conferma o di garanzia di ricezione dei dati devono prevedere messaggi di conferma avvenuta ricezione (mwsqacknowledge, o mwsgACK). Il trasmittente può attendere il riscontro di ciascun messaggio prima di trasmettere il successivo, oppure può continuare a trasmettere fino al raggiungimento di un numero massimo di messaggi non ancora confermati dal ricevente, nei cosiddetti protocolli mwswfinestrati.
Nei protocolli con finestra ciascun mwtqpacchetto trasmesso è identificato con un numero progressivo all'interno della mwtgfinestra, detto mwtwnumero di sequenza (mwuasequence number); i messaggi di conferma devono riportare il numero di sequenza del pacchetto che riscontrano.
I messaggi di conferma possono essere cumulativi ("ricevuti i pacchetti fino a N"), o richiedere la ritrasmissione cumulativa ("ritrasmettere i pacchetti fino a N") o selettiva dei soli pacchetti non ricevuti correttamente. In alcuni casi il riscontro dei messaggi ricevuti utilizza un messaggio dedicato, in altri casi il riscontro viene inserito in mwugcampi specifici dei messaggi trasmessi in direzione opposta (mwuwpiggyback) diminuendo le mwvalatenze di ritrasmissione.
Sottolivello MAC
Il sottolivello inferiore è mwvwmwwaMedia Access Control o mwwqmwwgMedium Access Control. Il suo scopo è quello di disciplinare l'mwwwaccesso multiplo di molteplici nodi ad un mwxacanale di comunicazione condiviso evitando o gestendo l'occorrenza di collisioni. Una collisione si verifica quando due o più nodi trasmettono simultaneamente dati sul canale condiviso. Ciò comporta l'inevitabile perdita dei dati trasmessi con conseguente spreco di mwxqbanda.
Esistono molteplici algoritmi e protocolli standard per il controllo dell'accesso multiplo. Ad esempio, il MAC mwxwIEEE 802.3 adotta l'algoritmo mwyaCSMA/CD mentre il MAC mwyqIEEE 802.11 si basa sull'algoritmo mwygCSMA/CA. Il primo è comunemente adottato in mwywLAN cablate, il secondo in mwzaWLAN.
Due sono le principali tipologie di algoritmi di accesso multiplo: casuale e ordinato. Nell'accesso multiplo casuale è possibile che si verifichino delle collisioni ma vengono implementati degli opportuni meccanismi per ridurne la probabilità di occorrenza e per ritrasmettere le trame collise. Nell'accesso ordinato, invece, l'evenienza di una collisione è del tutto impossibile poiché i nodi seguono un preciso ordine di accesso al canale (stabilito nella fase di inizializzazione della rete) che li rende utilizzatori esclusivi del mezzo trasmissivo (a meno di guasti o malfunzionamenti).
A livello MAC, inoltre, si definisce il formato della trama, che tipicamente conterrà i campi di inizio/fine, i campi di mwzwindirizzo MAC mittente/destinatario, il pacchetto mwaaincapsulato di livello LLC, il codice per la rilevazione degli errori (FEC), ed opzionalmente dei byte di padding per garantire che la dimensione della trama non scenda al di sotto di una soglia minima.
Interfacce
Il livello di data link è spesso implementato come un mwawdriver della mwbascheda di rete. Il mwbqsistema operativo avrà una certa interfaccia mwbgsoftware tra questo livello e quello superiore (di rete). Questa interfaccia non è un livello, ma più uno standard per la comunicazione tra livelli.
Alcuni esempi:
• ODI
• mwdaNDIS
• SANA II - Standard mwdwAmiga Networking Architecture, versione 2
Funzionalità sottolivello LLC
Trasmissione sincrona e asincrona
Nella trasmissione asincrona ogni carattere trasmesso viene preceduto e seguito da segnali che indicano appunto l'inizio e la fine del carattere; tali segnali vengono detti segnali di start e stop. La trasmissione asincrona perciò viene detta anche trasmissione start-stop. Con tale metodo ogni carattere può essere considerato indipendente dagli altri, l'intervallo di tempo tra l'invio di due caratteri è imprecisato.
Nella trasmissione sincrona i caratteri da inviare vengono raggruppati in messaggi (mwgamwgqframe). Ogni frame viene fatto precedere da caratteri di sincronizzazione che servono a far sì che la stazione ricevente si sincronizzi sulla velocità di trasmissione della stazione che invia il messaggio. La trasmissione sincrona è più veloce perché i tempi morti di trasmissione vengono ridotti, ma un errore anche in un singolo bit può danneggiare l'intero messaggio inviato. I protocolli di trasmissione sincrona si suddividono in mwggBCP (mwgwByte Control Protocol) o orientati al byte, in cui viene mantenuta la suddivisione in caratteri del messaggio da trasmettere, e mwhaBOP (mwhqBit Oriented Protocol) o orientati al bit, in cui i messaggi sono visti come una successione di bit (in questo modo non si è legati alla codifica ASCII a 8 bit).
Un'operazione importante nella trasmissione sincrona è il mwhwmwiaframing, cioè la suddivisione in frame delle informazioni da trasmettere.
Framing
Il termine mwiwframing fa riferimento alle seguenti operazioni:
• Incapsulamento dei dati con una intestazione (header) e una eventuale coda (tail).
• Interpretazione dei bit presenti nelle intestazioni (ed eventualmente nelle code).
Al fine di fornire servizi al livello di rete, il livello data link deve usufruire dei servizi fornitigli dal livello fisico. L'approccio consueto del livello data link è quello di dividere il flusso dei bit in pacchetti (adattati appunto ad una trasmissione su una mwkarete a pacchetto), e calcolarne la mwkqChecksum.
Vari metodi vengono utilizzati per la suddivisione dei bit in pacchetti o frame:
• Conteggio dei caratteri.
• Caratteri di inizio e fine.
• Indicatori (flag) di inizio e fine.
Il metodo del conteggio di caratteri (ottenuto specificando nel campo d'intestazione del pacchetto il numero di caratteri del frame) è raramente utilizzabile poiché, se il campo che contiene il numero di caratteri si rovina (altera) durante la trasmissione, non si può più individuare dove comincia il frame successivo; vengono quindi utilizzate le altre tecniche.
Nella trasmissione orientata al byte (il frame mantiene la suddivisione in byte) il frame viene preceduto dalla sequenza di caratteri mwmqASCII DLE STX (mwmgData Link Escape Start of TeXt) e finisce con la sequenza DLE ETX (mwmwData Link Escape End of TeXt). Se un frame si rovina e la destinazione perde la sincronizzazione basta trovare il successivo DLE STX o DLE ETX. Il carattere DLE però può comparire casualmente dentro al frame quando vengono trasmessi dati binari come programmi oggetto o numeri in virgola mobile; perché questi caratteri non interferiscano viene aggiunto un ulteriore DLE (che viene rimosso a destinazione prima di passare al frame al livello di rete) in modo che solo i DLE singoli vengano interpretati come delimitatori; questa tecnica si chiama mwnacharacter stuffing.
Nella trasmissione orientata al bit (il frame può contenere un numero qualsiasi di byte) ogni frame inizia e finisce con la sequenza 01111110 chiamata flag: questa sequenza può comparire casualmente nei dati, perciò in trasmissione dopo cinque 1 consecutivi viene sempre inserito uno 0 nel flusso di bit, indipendentemente dal fatto che il bit successivo sia 1 o 0, mentre in ricezione bisogna provvedere ad eliminare i bit inseriti, rimuovendo sempre uno 0 dopo cinque 1; questa tecnica è chiamata mwngbit stuffing.
Controllo di errore
Come detto, la stazione mittente del livello data-link riceve i dati dal livello superiore e li suddivide in frame prima di affidarli al livello fisico per la trasmissione su canale, aggiungendo ad esso un codice per il mwoqcontrollo degli errori (mwogintegrità dati) di trasmissione in ricezione (mwowchecksum).
Quando un pacchetto arriva a destinazione, la mwpqchecksum viene ricalcolata dallo stesso livello data-link del sistema ricevente. Se il risultato è diverso da quello contenuto nel pacchetto, il livello data-link riconosce che è stato commesso un errore e prende adeguati provvedimenti (come ad esempio scartare il pacchetto e spedire un messaggio di errore in risposta al mittente).
In generale si hanno due tipi di mwpwcodici di controllo, i mwqacodici rilevatori che permettono soltanto di capire che il frame non è corretto ed eventualmente richiedere la ritrasmissione del pacchetto (mwqqARQ Automatic Repeat-reQuest) e i mwqgcodici correttori che permettono non solo di capire se si è verificato un errore, ma anche di individuare la posizione dell'errore e di conseguenza correggerlo (mwqwFEC Forward Error Correction). Questi ultimi codici richiedono molti più mwrabit dei codici rilevatori e quindi sprecano ampiezza di banda; di solito perciò vengono usati i codici a sola rilevazione.
In caso di errore, se il servizio è inaffidabile il frame può essere semplicemente scartato; se la linea deve essere affidabile bisogna che tutti i frame arrivino correttamente; se si usa un codice rilevatore il ricevente deve richiedere la ritrasmissione dei frame errati.
La scelta tra codici rilevatori e correttori può dipendere anche dalla velocità delle linee (per linee a bassa velocità, aspettare la ritrasmissione potrebbe richiedere troppo tempo) o affidabilità (se il tasso di errore sulla linea è molto basso non vale la pena sprecare molta banda per un codice correttore) o dal tipo di servizio richiesto (real-time o meno).
Il modo consueto per assicurare una consegna affidabile è quello di fornire al mittente un riscontro di quello che sta accadendo all'altro capo della linea. Tipicamente il protocollo richiede che il ricevente rispedisca alcuni speciali pacchetti di controllo con valore positivo o negativo a seconda dei pacchetti ricevuti. Se il mittente riceve un riscontro positivo su di un pacchetto spedito, sa che esso è arrivato correttamente. Se invece ottiene un riscontro negativo significa che qualcosa è andata male e che occorre ritrasmettere il pacchetto.
Una complicazione aggiuntiva potrebbe derivare dalla possibilità che i problemi hardware causino la sparizione totale del pacchetto. Se un pacchetto non arriva a destinazione, il mittente non aspetterà all'infinito, infatti viene utilizzato un timer, che viene avviato quando i dati vengono trasmessi, se il timer supera la soglia limite (programmata) senza ricevere l'ACK (mwsqAcknowledgment o conferma), rimanderà di nuovo i pacchetti. Tuttavia, se il pacchetto o il messaggio di riscontro vengono persi, il timer scade (mwsgtime-out), e la stazione mittente, non ricevendo conferma, è costretta a reinviare i dati, ma a questo punto il mittente potrebbe ricevere due o più volte lo stesso pacchetto. Per risolvere questo problema, i pacchetti inviati vengono numerati, così il sistema ricevente, nel caso in cui riceva un numero di pacchetto uguale al precedente, cioè una copia del pacchetto, lo scarta. Questa tecnica è nota come mwswStop and wait; le altre tecniche maggiormente utilizzate per il controllo degli errori sono il mwtaCodice di Hamming e il mwtqCRC (mwtgControllo a Ridondanza Ciclica). Di fatto però funzionalità di controllo dell'errore sui singoli pacchetti vengono espletate non solo a livello datalink, ma in ogni altro strato del protocollo per garantire la correttezza dei dati di servizio (mwtwheader) dei protocolli destinati ai rispettivi strati.
Controllo di flusso
Un altro importante problema di progettazione che si ritrova nel livello di data link è quello di gestire una linea condivisa quando più nodi vogliono inviare messaggi nello stesso tempo e inoltre deve decidere cosa fare di un mittente che sistematicamente tende a trasmettere pacchetti più velocemente di quanto il ricevente possa accettarli. Questa situazione può facilmente essere riscontrata quando il mittente è dislocato su una macchina veloce e il ricevente su una macchina lenta. Il mittente continua a spedire pacchetti ad alta velocità, fino a quando il ricevente non è completamente sopraffatto. Anche se la trasmissione è esente da errori, a un certo punto il ricevente non sarà in grado di gestire i pacchetti in arrivo e inizierà a perderli (mwugbuffer overflow).
La tipica soluzione è quella di introdurre un mwvacontrollo di flusso per obbligare il mittente a rispettare la velocità del ricevente nello spedire i pacchetti. Questa imposizione solitamente richiede un certo tipo di meccanismo di riscontro (mwvqfeedback) in modo che il mittente possa essere avvisato se il ricevente è in grado di ricevere o meno.
Nel caso in cui invece più nodi vogliono inviare contemporaneamente dei messaggi, si tende ad introdurre un controllo centralizzato, creando un singolo nodo di controllo, responsabile di determinare chi ottiene la priorità all'interno della rete; il nodo successivo quindi, controllerà quando la rete non sarà più occupata, così da poter inviare il messaggio appena questa diventerà libera. Può accadere però, che più nodi monitorizzano la rete e che appena questa sia libera, inviano immediatamente i messaggi, in questo caso si avranno dei problemi di collisione; per ovviare a questo problema, i nodi che monitorano la rete saranno regolati da un protocollo di mwvwaccesso multiplo attendendo ad esempio un tempo casuale prima di inviare i messaggi, poiché è improbabile che i nodi scelgano lo stesso istante per inviare i dati.
Funzionalita sottolivello MAC
In mwwwtelecomunicazioni, nell'ambito delle mwxareti di calcolatori, il mwxqMAC (mwxgacronimo di mwxwMedium Access Control o mwyaMedia Access Control) è un sottolivello del mwyqmodello architetturale mwygstandardizzato mwywISO/OSI, definito nello standard mwzaIEEE 802, che contiene funzionalità di mwzqcontrollo dell'accesso al mwzgmezzo fisico per canali mwzwbroadcast, funzionalità di mw0aframing e mw0qcontrollo di errore.
Fa parte del mw0wlivello datalink, di cui rappresenta il sottolivello inferiore sovrastato dal sottolivello mw1aLLC e limitato inferiormente dal mw1qlivello fisico. Le varie caratteristiche di questo strato vengono descritte dalla terza parte dello standard in poi. È il livello a cui trova sede l'mw1gindirizzo MAC o indirizzo fisico del calcolatore. Questo strato ha principalmente due funzioni, quella di incapsulamento dati e quella dell'accesso al mezzo.
La prima funzione si occupa dell'incapsulamento dei frame prima della loro trasmissione e del decapsulamento alla loro ricezione; inoltre si occupa della rivelazione degli errori di trasmissione e di delimitare il frame per favorire la sincronizzazione tra il trasmettitore e il ricevitore. La seconda funzione controlla l'accesso ai mw2amedia, comunicando direttamente con in livello fisico.
Note
cite-note-11. ↑ mw3w(mw4amw4qEN) mw4gmw4wData Link Layer Definition, su mw5alinfo.org, 16 ottobre 2005. mw5qURL consultato il 13 maggio 2012.
cite-note-22. ↑ mw6q(mw6gmw6wEN) Bradley Mitchell, mw7amw7qVisual Networking Overview - The OSI Model - Data Link Layer, su mw7gcompnetworking.about.com, about.com. mw7wURL consultato il 13 maggio 2012 mw8a(archiviato dall'mw8qurl originale il 7 maggio 2012).
Bibliografia
• mw9qA. Tanenbaum, Reti di Computer.
• mw9wFabrizia Scorzoni, Reti e protocolli.
Voci correlate
• Ethernet
• WiFi
• FDDI
• ARCnet
• Cisco Discovery Protocol (CDP)
• Controller Area Network (CAN)
• Econet
• High-Level Data Link Control (HDLC)
• IEEE 802.2 (comprende le funzioni LLC per tutti i livelli MAC IEEE 802)
• LocalTalk
• Multiprotocol Label Switching (MPLS)
• StarLan
• Comunicazioni seriali
Altri progetti
Altri progetti
• Wikimedia Commons
• Wikimedia Commons contiene immagini o altri file sul livello di collegamento dati
Collegamenti esterni
• (EN) Sito ufficiale, su iso.org.
• citerefbritannica-com(EN) data-link level, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
• citereffoldoc(EN) Denis Howe, data link layer, in Free On-line Dictionary of Computing. Disponibile con licenza mwaqaGFDL